package test;

public class CountArrangement {
	//由于选过的不能再选，因此需要用check进行标记
	public boolean[] check;
    public int ret;
    //pos记录现在枚举的是第几个元素
    public void dfs(int n,int len,int pos){
        if(n==len){
            ret++;
            return ;
        }

        for(int i=1;i<=n;i++){
            if(check[i]==false&&((i%pos==0)||(pos%i==0))){
                check[i]=true;
                dfs(n,len+1,pos+1);
                check[i]=false;
            }
        }
    }
    public int countArrangement(int n) {
        check=new boolean[n+1];
        ret=0;
        dfs(n,0,1);
        return ret;
    }
}
